﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.TeamFoundation.VersionControl.Client;
using Microsoft.TeamFoundation.Build.Client;

namespace PsTFS.Objects
{
    #region StructureSC
    /// <summary>
    /// Element permtant de représenter le code source dans le Provider TSF
    /// </summary>
    public class StructureSC
    {
        /// <summary>
        /// Nom
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// Type d'élement Folder, File
        /// </summary>
        public ItemType ItemType { get; set; }
        /// <summary>
        /// Surchage pour l'affichage
        /// </summary>
        /// <returns>Le nom de l'élément</returns>
        public override string ToString()
        {
            return Name;
        }
    }
    #endregion StructureSC

    #region StructureBase
    /// <summary>
    /// Structure de base pour le provider
    /// </summary>
    public class StructureBase
    {
        /// <summary>
        /// Alias (WE, SC...)
        /// </summary>
        public string Alias {get;set;}
        /// <summary>
        /// Elément (WorkItem, SourceControl...)
        /// </summary>
        public string Element {get;set;}

        /// <summary>
        /// Affichage de l'élément
        /// </summary>
        /// <returns></returns>
        public override string ToString()
        {
            return Element;
        }
    }
    #endregion StructureBase

    #region StructureProject
    /// <summary>
    /// Struture de base pour la gestion des projet dans le provider
    /// </summary>
    public class StructureProject
    {
        /// <summary>
        /// Nom du projet
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// Afichage du nom du projet
        /// </summary>
        /// <returns></returns>
        public override string ToString()
        {
            return Name;
        }
    }

    #endregion StructureProject

    #region StructureWorkitem
    /// <summary>
    /// Struture de base pour la gestion des workitem dans le provider
    /// </summary>
    public class StructureWorkitem
    {
        /// <summary>
        /// Identifiant
        /// </summary>
        public int Id { get; set; }
        /// <summary>
        /// Type (Bug, Tache...)
        /// </summary>
        public string Type { get; set; }
        /// <summary>
        /// Titre du workitem
        /// </summary>
        public string Title { get; set; }
        /// <summary>
        /// Etat du WI (Ouvert, Résolut...)
        /// </summary>
        public string State { get; set; }
        /// <summary>
        /// Raison de passage d'état
        /// </summary>
        public string Reason { get; set; }
    }

    #endregion StructureWorkitem

    /// <summary>
    /// Struture de base pour le type de WI
    /// </summary>
    public class StructureWorkitemType
    {
        /// <summary>
        /// Nom
        /// </summary>
        public string Name { get; set; }
    }

    /// <summary>
    /// Structure des nuild pour la gestion du provider
    /// </summary>
    public class StructureBuild
    {
        /// <summary>
        /// Etat de la build
        /// </summary>
        public BuildStatus Status { get; set; }
        /// <summary>
        /// Numéro de la build
        /// </summary>
        public string Number { get; set; }
        /// <summary>
        /// Définition de la build
        /// </summary>
        public string Definition { get; set; }
        /// <summary>
        /// Agent de build
        /// </summary>
        public string Agent { get; set; }
        /// <summary>
        /// Serveur de build
        /// </summary>
        public string Server { get; set; }
        /// <summary>
        /// Etat de fin
        /// </summary>
        public bool Finished { get; set; }
        /// <summary>
        /// Date de fin de Build
        /// </summary>
        public DateTime FinishTime { get; set; }
    }
}
